def test_basic():
    global num
    num = 10
    print("num in testB() is:", num)


def test_return():
    return 10, 20


def user_info(name, age, gender='Male'):
    print(f"Name: {name}, Age: {age}, Gender: {gender}")


def test_args(*args):
    """
    传进的所有参数都会被args变量收集，它会根据传进参数的位置合并为一个元组(tuple)，args是元组类型，这就是位置传递
    :param args:
    :return:
    """
    print(args)


def test_fun(compute):
    result = compute(10, 20)
    print(result)


def compute(a, b):
    return a + b


num = 5

test_basic()

print("num in main() is:", num)

x, y = test_return()

print(x, y)

user_info("John", 25, "Male")
user_info(name="Jane", age=30, gender="Female")
user_info("Bob", 40)

test_args(1, 2, 3, 4, 5)

test_fun(compute)

"""
lambda 是关键字，表示定义匿名函数
传入参数表示匿名函数的形式参数，如：x, y 表示接收2个形式参数
返回值表示匿名函数的返回值，如：x + y 表示返回x和y的和
函数体，就是函数的执行逻辑，要注意：只能写一行，无法写多行代码
"""
test_fun(lambda a, b: a * b)  # 匿名函数
